{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# W3_冯炳驹_124298228"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 第七步：测试并最终预测\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "      <th>interest_level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.5</td>\n",
       "      <td>3</td>\n",
       "      <td>3000</td>\n",
       "      <td>1200.0</td>\n",
       "      <td>750.000000</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>4.5</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>5465</td>\n",
       "      <td>2732.5</td>\n",
       "      <td>1821.666667</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>12</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>2850</td>\n",
       "      <td>1425.0</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>17</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3275</td>\n",
       "      <td>1637.5</td>\n",
       "      <td>1637.500000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>18</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>3350</td>\n",
       "      <td>1675.0</td>\n",
       "      <td>670.000000</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>28</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 228 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   bathrooms  bedrooms  price  price_bathrooms  price_bedrooms  room_diff  \\\n",
       "0        1.5         3   3000           1200.0      750.000000       -1.5   \n",
       "1        1.0         2   5465           2732.5     1821.666667       -1.0   \n",
       "2        1.0         1   2850           1425.0     1425.000000        0.0   \n",
       "3        1.0         1   3275           1637.5     1637.500000        0.0   \n",
       "4        1.0         4   3350           1675.0      670.000000       -3.0   \n",
       "\n",
       "   room_num  Year  Month  Day       ...        walk  walls  war  washer  \\\n",
       "0       4.5  2016      6   24       ...           0      0    0       0   \n",
       "1       3.0  2016      6   12       ...           0      0    0       0   \n",
       "2       2.0  2016      4   17       ...           0      0    0       0   \n",
       "3       2.0  2016      4   18       ...           0      0    0       0   \n",
       "4       5.0  2016      4   28       ...           0      0    1       0   \n",
       "\n",
       "   water  wheelchair  wifi  windows  work  interest_level  \n",
       "0      0           0     0        0     0               1  \n",
       "1      0           0     0        0     0               2  \n",
       "2      0           0     0        0     0               0  \n",
       "3      0           0     0        0     0               2  \n",
       "4      0           0     0        0     0               2  \n",
       "\n",
       "[5 rows x 228 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# path to where the data lies\n",
    "dpath = './data/'\n",
    "train = pd.read_csv(dpath +\"RentListingInquries_FE_train.csv\")\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nrR4AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1d6b4e7aeb8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(train.interest_level);\n",
    "pyplot.xlabel('interest_level');\n",
    "pyplot.ylabel('Number of occurrences');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# drop ids and get labels\n",
    "y_train = train['interest_level']\n",
    "\n",
    "train = train.drop([\"interest_level\"], axis=1)\n",
    "X_train = np.array(train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# prepare cross validation\n",
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 默认参数，此时学习率为0.1，比较大，观察弱分类数目的大致范围 （采用默认参数配置，看看模型是过拟合还是欠拟合）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#直接调用xgboost内嵌的交叉验证（cv），可对连续的n_estimators参数进行快速交叉验证\n",
    "#而GridSearchCV只能对有限个参数进行交叉验证\n",
    "def modelfit(alg, X_train, y_train, cv_folds=None, early_stopping_rounds=10):\n",
    "    xgb_param = alg.get_xgb_params()\n",
    "    xgb_param['num_class'] = 9\n",
    "    \n",
    "    #直接调用xgboost，而非sklarn的wrapper类\n",
    "    xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "        \n",
    "    cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], folds =cv_folds,\n",
    "             metrics='mlogloss', early_stopping_rounds=early_stopping_rounds)\n",
    "  \n",
    "    cvresult.to_csv('1_nestimators.csv', index_label = 'n_estimators')\n",
    "    \n",
    "    #最佳参数n_estimators\n",
    "    n_estimators = cvresult.shape[0]\n",
    "    \n",
    "    # 采用交叉验证得到的最佳参数n_estimators，训练模型\n",
    "    alg.set_params(n_estimators = n_estimators)\n",
    "    alg.fit(X_train, y_train, eval_metric='mlogloss')\n",
    "        \n",
    "    #Predict training set:\n",
    "    #train_predprob = alg.predict_proba(X_train)\n",
    "    #logloss = log_loss(y_train, train_predprob)\n",
    "\n",
    "   #Print model report:\n",
    "   # print (\"logloss of train :\" )\n",
    "   # print logloss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "#params = {\"objective\": \"multi:softprob\", \"eval_metric\":\"mlogloss\", \"num_class\": 9}\n",
    "xgb1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=192,  #第一轮参数调整得到的n_estimators最优值\n",
    "        max_depth=6,\n",
    "        min_child_weight=0.5,\n",
    "        gamma=0,\n",
    "        subsample=0.8,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        reg_alpha=0.8,\n",
    "        reg_lambda=2,\n",
    "        objective= 'multi:softprob',\n",
    "        nthread=4,\n",
    "        seed=3)\n",
    "\n",
    "modelfit(xgb1, X_train, y_train, cv_folds = kfold)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nseJgjDFmkP8PYZqv5uwGkXcAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1d6c79005f8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('1_nestimators.csv')\n",
    "        \n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(0, cvresult.shape[0])\n",
    "        \n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators4_1.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n18rEISSV3W8AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1d6c79445c0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('1_nestimators.csv')\n",
    "\n",
    "cvresult = cvresult.iloc[100:]\n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(100,cvresult.shape[0]+100)\n",
    "        \n",
    "fig = pyplot.figure(figsize=(10, 10), dpi=100)\n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators_detail.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 测试正确率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Accuary: 79.99%\n"
     ]
    }
   ],
   "source": [
    "# 计算分类正确率\n",
    "from sklearn.metrics import accuracy_score\n",
    "\n",
    "train_preds = xgb1.predict(X_train)\n",
    "y_pred = [round(value) for value in train_preds]\n",
    "train_accuracy = accuracy_score(y_train, y_pred)\n",
    "print (\"Train Accuary: %.2f%%\" % (train_accuracy * 100.0))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 测试logloss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.48656008607969997"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_predprob = xgb1.predict_proba(X_train)\n",
    "logloss = log_loss(y_train, train_predprob)\n",
    "logloss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "      <th>listing_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>2950</td>\n",
       "      <td>1475.000000</td>\n",
       "      <td>1475.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>11</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7142618</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>2850</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>950.000000</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7210040</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3758</td>\n",
       "      <td>1879.000000</td>\n",
       "      <td>1879.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7103890</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>3300</td>\n",
       "      <td>1650.000000</td>\n",
       "      <td>1100.000000</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>11</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7143442</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2.0</td>\n",
       "      <td>2</td>\n",
       "      <td>4900</td>\n",
       "      <td>1633.333333</td>\n",
       "      <td>1633.333333</td>\n",
       "      <td>0.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>12</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>6860601</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 228 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   bathrooms  bedrooms  price  price_bathrooms  price_bedrooms  room_diff  \\\n",
       "0        1.0         1   2950      1475.000000     1475.000000        0.0   \n",
       "1        1.0         2   2850      1425.000000      950.000000       -1.0   \n",
       "2        1.0         1   3758      1879.000000     1879.000000        0.0   \n",
       "3        1.0         2   3300      1650.000000     1100.000000       -1.0   \n",
       "4        2.0         2   4900      1633.333333     1633.333333        0.0   \n",
       "\n",
       "   room_num  Year  Month  Day     ...      walk  walls  war  washer  water  \\\n",
       "0       2.0  2016      6   11     ...         0      0    0       0      0   \n",
       "1       3.0  2016      6   24     ...         0      0    1       0      0   \n",
       "2       2.0  2016      6    3     ...         0      0    0       0      0   \n",
       "3       3.0  2016      6   11     ...         0      0    0       0      0   \n",
       "4       4.0  2016      4   12     ...         0      0    1       0      0   \n",
       "\n",
       "   wheelchair  wifi  windows  work  listing_id  \n",
       "0           0     0        0     0     7142618  \n",
       "1           0     0        0     0     7210040  \n",
       "2           0     0        0     0     7103890  \n",
       "3           1     0        0     0     7143442  \n",
       "4           0     0        0     0     6860601  \n",
       "\n",
       "[5 rows x 228 columns]"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dpath = './data/'\n",
    "test_data = pd.read_csv(dpath +\"RentListingInquries_FE_test.csv\")\n",
    "test_data.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 预测测试集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "test_id = test_data['listing_id']\n",
    "test_data.drop(['listing_id'], inplace = True, axis = 1)\n",
    "X_test = np.array(test_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "test_preds = xgb1.predict_proba(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.02454347,  0.08493465,  0.89052182],\n",
       "       [ 0.05432613,  0.25797451,  0.68769938],\n",
       "       [ 0.01413664,  0.05457386,  0.93128949],\n",
       "       ..., \n",
       "       [ 0.05621517,  0.18936965,  0.75441521],\n",
       "       [ 0.62161362,  0.23331417,  0.14507222],\n",
       "       [ 0.31004518,  0.25990507,  0.43004972]], dtype=float32)"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_preds"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>high</th>\n",
       "      <th>medium</th>\n",
       "      <th>low</th>\n",
       "      <th>listing_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.024543</td>\n",
       "      <td>0.084935</td>\n",
       "      <td>0.890522</td>\n",
       "      <td>7142618</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.054326</td>\n",
       "      <td>0.257975</td>\n",
       "      <td>0.687699</td>\n",
       "      <td>7210040</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.014137</td>\n",
       "      <td>0.054574</td>\n",
       "      <td>0.931289</td>\n",
       "      <td>7103890</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.202657</td>\n",
       "      <td>0.212521</td>\n",
       "      <td>0.584821</td>\n",
       "      <td>7143442</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.028962</td>\n",
       "      <td>0.160510</td>\n",
       "      <td>0.810529</td>\n",
       "      <td>6860601</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.006771</td>\n",
       "      <td>0.090746</td>\n",
       "      <td>0.902484</td>\n",
       "      <td>6840081</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0.039165</td>\n",
       "      <td>0.141365</td>\n",
       "      <td>0.819470</td>\n",
       "      <td>6922337</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0.183314</td>\n",
       "      <td>0.512864</td>\n",
       "      <td>0.303822</td>\n",
       "      <td>6913616</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>0.028499</td>\n",
       "      <td>0.206031</td>\n",
       "      <td>0.765469</td>\n",
       "      <td>6937820</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0.010297</td>\n",
       "      <td>0.063831</td>\n",
       "      <td>0.925872</td>\n",
       "      <td>6893933</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>0.002278</td>\n",
       "      <td>0.020252</td>\n",
       "      <td>0.977470</td>\n",
       "      <td>6832604</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>0.059858</td>\n",
       "      <td>0.178247</td>\n",
       "      <td>0.761895</td>\n",
       "      <td>6915282</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>0.084323</td>\n",
       "      <td>0.168547</td>\n",
       "      <td>0.747130</td>\n",
       "      <td>7127565</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>0.006083</td>\n",
       "      <td>0.023094</td>\n",
       "      <td>0.970822</td>\n",
       "      <td>6827899</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>0.018970</td>\n",
       "      <td>0.046468</td>\n",
       "      <td>0.934562</td>\n",
       "      <td>6934855</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>0.008492</td>\n",
       "      <td>0.063199</td>\n",
       "      <td>0.928308</td>\n",
       "      <td>6861826</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>0.041179</td>\n",
       "      <td>0.121407</td>\n",
       "      <td>0.837414</td>\n",
       "      <td>6871643</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>0.000671</td>\n",
       "      <td>0.007301</td>\n",
       "      <td>0.992029</td>\n",
       "      <td>6842542</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>0.018220</td>\n",
       "      <td>0.112619</td>\n",
       "      <td>0.869161</td>\n",
       "      <td>6934145</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>0.074289</td>\n",
       "      <td>0.201436</td>\n",
       "      <td>0.724275</td>\n",
       "      <td>6829365</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>0.028085</td>\n",
       "      <td>0.108444</td>\n",
       "      <td>0.863471</td>\n",
       "      <td>7167858</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>0.029230</td>\n",
       "      <td>0.069563</td>\n",
       "      <td>0.901208</td>\n",
       "      <td>6859483</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>0.026779</td>\n",
       "      <td>0.069847</td>\n",
       "      <td>0.903374</td>\n",
       "      <td>6861377</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>0.055854</td>\n",
       "      <td>0.269391</td>\n",
       "      <td>0.674756</td>\n",
       "      <td>6848960</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>0.008592</td>\n",
       "      <td>0.050664</td>\n",
       "      <td>0.940744</td>\n",
       "      <td>6918850</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>0.130635</td>\n",
       "      <td>0.291580</td>\n",
       "      <td>0.577785</td>\n",
       "      <td>6916867</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>0.005966</td>\n",
       "      <td>0.091486</td>\n",
       "      <td>0.902548</td>\n",
       "      <td>6895840</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>0.291366</td>\n",
       "      <td>0.282389</td>\n",
       "      <td>0.426245</td>\n",
       "      <td>6813539</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>0.394582</td>\n",
       "      <td>0.487888</td>\n",
       "      <td>0.117530</td>\n",
       "      <td>7116900</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>0.120828</td>\n",
       "      <td>0.160026</td>\n",
       "      <td>0.719146</td>\n",
       "      <td>6890328</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>70</th>\n",
       "      <td>0.004573</td>\n",
       "      <td>0.067345</td>\n",
       "      <td>0.928083</td>\n",
       "      <td>6856860</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>71</th>\n",
       "      <td>0.002011</td>\n",
       "      <td>0.008702</td>\n",
       "      <td>0.989287</td>\n",
       "      <td>6884921</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>72</th>\n",
       "      <td>0.002028</td>\n",
       "      <td>0.005778</td>\n",
       "      <td>0.992194</td>\n",
       "      <td>6937417</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>73</th>\n",
       "      <td>0.003480</td>\n",
       "      <td>0.034865</td>\n",
       "      <td>0.961654</td>\n",
       "      <td>6831129</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>74</th>\n",
       "      <td>0.030967</td>\n",
       "      <td>0.119321</td>\n",
       "      <td>0.849712</td>\n",
       "      <td>6936660</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75</th>\n",
       "      <td>0.002553</td>\n",
       "      <td>0.035372</td>\n",
       "      <td>0.962075</td>\n",
       "      <td>6940667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>76</th>\n",
       "      <td>0.002875</td>\n",
       "      <td>0.022347</td>\n",
       "      <td>0.974778</td>\n",
       "      <td>7201307</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>77</th>\n",
       "      <td>0.049684</td>\n",
       "      <td>0.161444</td>\n",
       "      <td>0.788872</td>\n",
       "      <td>6825434</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>78</th>\n",
       "      <td>0.046746</td>\n",
       "      <td>0.138412</td>\n",
       "      <td>0.814842</td>\n",
       "      <td>6848114</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>79</th>\n",
       "      <td>0.797224</td>\n",
       "      <td>0.133137</td>\n",
       "      <td>0.069639</td>\n",
       "      <td>6947758</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>80</th>\n",
       "      <td>0.266417</td>\n",
       "      <td>0.259889</td>\n",
       "      <td>0.473694</td>\n",
       "      <td>6897002</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>81</th>\n",
       "      <td>0.004839</td>\n",
       "      <td>0.029509</td>\n",
       "      <td>0.965652</td>\n",
       "      <td>6926661</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>82</th>\n",
       "      <td>0.438785</td>\n",
       "      <td>0.184821</td>\n",
       "      <td>0.376394</td>\n",
       "      <td>6867411</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>83</th>\n",
       "      <td>0.036488</td>\n",
       "      <td>0.282773</td>\n",
       "      <td>0.680740</td>\n",
       "      <td>6910154</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>84</th>\n",
       "      <td>0.091784</td>\n",
       "      <td>0.157134</td>\n",
       "      <td>0.751083</td>\n",
       "      <td>7157900</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>85</th>\n",
       "      <td>0.081870</td>\n",
       "      <td>0.309061</td>\n",
       "      <td>0.609069</td>\n",
       "      <td>6922324</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>86</th>\n",
       "      <td>0.003964</td>\n",
       "      <td>0.042098</td>\n",
       "      <td>0.953938</td>\n",
       "      <td>6863068</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>87</th>\n",
       "      <td>0.041690</td>\n",
       "      <td>0.156415</td>\n",
       "      <td>0.801896</td>\n",
       "      <td>6912109</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>88</th>\n",
       "      <td>0.170620</td>\n",
       "      <td>0.155489</td>\n",
       "      <td>0.673892</td>\n",
       "      <td>6918609</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>89</th>\n",
       "      <td>0.182974</td>\n",
       "      <td>0.143616</td>\n",
       "      <td>0.673410</td>\n",
       "      <td>6889300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>90</th>\n",
       "      <td>0.077662</td>\n",
       "      <td>0.199139</td>\n",
       "      <td>0.723199</td>\n",
       "      <td>6837794</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>91</th>\n",
       "      <td>0.566081</td>\n",
       "      <td>0.155091</td>\n",
       "      <td>0.278828</td>\n",
       "      <td>6943098</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>92</th>\n",
       "      <td>0.011678</td>\n",
       "      <td>0.094204</td>\n",
       "      <td>0.894118</td>\n",
       "      <td>6927601</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>93</th>\n",
       "      <td>0.001142</td>\n",
       "      <td>0.009451</td>\n",
       "      <td>0.989406</td>\n",
       "      <td>6897826</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>94</th>\n",
       "      <td>0.003048</td>\n",
       "      <td>0.020356</td>\n",
       "      <td>0.976596</td>\n",
       "      <td>6882892</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95</th>\n",
       "      <td>0.123166</td>\n",
       "      <td>0.412740</td>\n",
       "      <td>0.464094</td>\n",
       "      <td>6873384</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>96</th>\n",
       "      <td>0.004579</td>\n",
       "      <td>0.024883</td>\n",
       "      <td>0.970539</td>\n",
       "      <td>6934693</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>97</th>\n",
       "      <td>0.035537</td>\n",
       "      <td>0.279581</td>\n",
       "      <td>0.684882</td>\n",
       "      <td>7224450</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>0.001401</td>\n",
       "      <td>0.015456</td>\n",
       "      <td>0.983142</td>\n",
       "      <td>6898157</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>99</th>\n",
       "      <td>0.002622</td>\n",
       "      <td>0.028106</td>\n",
       "      <td>0.969272</td>\n",
       "      <td>6837355</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>100 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        high    medium       low  listing_id\n",
       "0   0.024543  0.084935  0.890522     7142618\n",
       "1   0.054326  0.257975  0.687699     7210040\n",
       "2   0.014137  0.054574  0.931289     7103890\n",
       "3   0.202657  0.212521  0.584821     7143442\n",
       "4   0.028962  0.160510  0.810529     6860601\n",
       "5   0.006771  0.090746  0.902484     6840081\n",
       "6   0.039165  0.141365  0.819470     6922337\n",
       "7   0.183314  0.512864  0.303822     6913616\n",
       "8   0.028499  0.206031  0.765469     6937820\n",
       "9   0.010297  0.063831  0.925872     6893933\n",
       "10  0.002278  0.020252  0.977470     6832604\n",
       "11  0.059858  0.178247  0.761895     6915282\n",
       "12  0.084323  0.168547  0.747130     7127565\n",
       "13  0.006083  0.023094  0.970822     6827899\n",
       "14  0.018970  0.046468  0.934562     6934855\n",
       "15  0.008492  0.063199  0.928308     6861826\n",
       "16  0.041179  0.121407  0.837414     6871643\n",
       "17  0.000671  0.007301  0.992029     6842542\n",
       "18  0.018220  0.112619  0.869161     6934145\n",
       "19  0.074289  0.201436  0.724275     6829365\n",
       "20  0.028085  0.108444  0.863471     7167858\n",
       "21  0.029230  0.069563  0.901208     6859483\n",
       "22  0.026779  0.069847  0.903374     6861377\n",
       "23  0.055854  0.269391  0.674756     6848960\n",
       "24  0.008592  0.050664  0.940744     6918850\n",
       "25  0.130635  0.291580  0.577785     6916867\n",
       "26  0.005966  0.091486  0.902548     6895840\n",
       "27  0.291366  0.282389  0.426245     6813539\n",
       "28  0.394582  0.487888  0.117530     7116900\n",
       "29  0.120828  0.160026  0.719146     6890328\n",
       "..       ...       ...       ...         ...\n",
       "70  0.004573  0.067345  0.928083     6856860\n",
       "71  0.002011  0.008702  0.989287     6884921\n",
       "72  0.002028  0.005778  0.992194     6937417\n",
       "73  0.003480  0.034865  0.961654     6831129\n",
       "74  0.030967  0.119321  0.849712     6936660\n",
       "75  0.002553  0.035372  0.962075     6940667\n",
       "76  0.002875  0.022347  0.974778     7201307\n",
       "77  0.049684  0.161444  0.788872     6825434\n",
       "78  0.046746  0.138412  0.814842     6848114\n",
       "79  0.797224  0.133137  0.069639     6947758\n",
       "80  0.266417  0.259889  0.473694     6897002\n",
       "81  0.004839  0.029509  0.965652     6926661\n",
       "82  0.438785  0.184821  0.376394     6867411\n",
       "83  0.036488  0.282773  0.680740     6910154\n",
       "84  0.091784  0.157134  0.751083     7157900\n",
       "85  0.081870  0.309061  0.609069     6922324\n",
       "86  0.003964  0.042098  0.953938     6863068\n",
       "87  0.041690  0.156415  0.801896     6912109\n",
       "88  0.170620  0.155489  0.673892     6918609\n",
       "89  0.182974  0.143616  0.673410     6889300\n",
       "90  0.077662  0.199139  0.723199     6837794\n",
       "91  0.566081  0.155091  0.278828     6943098\n",
       "92  0.011678  0.094204  0.894118     6927601\n",
       "93  0.001142  0.009451  0.989406     6897826\n",
       "94  0.003048  0.020356  0.976596     6882892\n",
       "95  0.123166  0.412740  0.464094     6873384\n",
       "96  0.004579  0.024883  0.970539     6934693\n",
       "97  0.035537  0.279581  0.684882     7224450\n",
       "98  0.001401  0.015456  0.983142     6898157\n",
       "99  0.002622  0.028106  0.969272     6837355\n",
       "\n",
       "[100 rows x 4 columns]"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "submission = pd.DataFrame(test_preds, columns=[ 'high', 'medium', 'low'])\n",
    "submission['listing_id'] = test_id\n",
    "submission.head(100)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 输出结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "submission.to_csv('w3_xgboots_predict_resulf.csv', index = False)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
